#ifndef MATRIX
#define MATRIX

#include "Vector3D.h"
#include "Vector4D.h"

class Matrix {
public:
	Matrix(void);

	// column major format
	float _11, _21, _31, _41;
	float _12, _22, _32, _42;
	float _13, _23, _33, _43;
	float _14, _24, _34, _44;
	
	void setIdentityMatrix();
	void setTranslationMatrix(Vector3D const& d);

	Matrix operator * (const Matrix& m) const;
	Vector3D operator * (const Vector3D& v) const;
	Vector4D operator * (const Vector4D& v) const;

	Matrix invert();
};

#endif